import 'package:flutter/material.dart';
import 'package:hc_ui/config/hc_default_theme_config.dart';
import 'package:hc_ui/theme/hc_base_theme.dart';

class HcCommonTheme extends HcBaseTheme<HcCommonTheme> {
  /* ==================
          主题色
 ==================== */

  /// 主要颜色
  Color? _primaryColor;

  //成功色
  Color? _successColor;

  //错误色
  Color? _errorColor;

  //警告色
  Color? _warningColor;

  //帮助色
  Color? _helpColor;

  //通知色
  Color? _noticeColor;

  //禁用色
  Color? _disabledColor;

  Color? _defaultColor;

  Color? _surfaceColor;

  Color? _onSurfaceColor;

  /* ==================
         文字颜色
 ==================== */
  //反转颜色
  Color? _textInverseColor;

  //基础颜色
  Color? _textBaseColor;

  //副标题颜色
  Color? _textSubtitleColor;

  //标题颜色
  Color? _textTitleColor;

  //价格颜色
  Color? _textPriceColor;

  //禁用的颜色
  Color? _textDisableColor;

  //提示文字颜色
  Color? _textHintColor;

  /* ==================
          页面相关
 ==================== */
  //下划线颜色
  Color? _underlineColor;

  // 线段颜色
  Color? _linkColor;

  //边框颜色
  Color? _borderColor;

  //页面填充色
  Color? _fillPageColor;

  // 组件填充色
  Color? _fillWidgetColor;

  //遮罩颜色
  Color? _fillMaskColor;

/* ==================
          文字大小
 ==================== */
  //超大文字
  double? _fontSizeLarge;

  //标题文字
  double? _fontSizeTitle;

  //副标题文字大小
  double? _fontSizeSubtitle;

  //基础文字大小
  double? _fontSizeBase;

  //提示文字大小
  double? _fontSizeHint;

  // 徽章数字的大小
  double? _fontSizeBadge;

  //小号文字
  double? _fontSizeSmall;

  //tag的文字大小
  double? _fontSizeTag;

/* ==================
          文字高度
 ==================== */

  double? _fontHeightMd;
  double? _fontHeightLg;

  /* ==================
          边距大小
 ==================== */

  double? _hSpacingPage;
  double? _hSpacingXxs;

  double? _hSpacingXs;

  double? _hSpacingSm;

  double? _hSpacingBase;

  double? _hSpacingLg;

  double? _hSpacingXl;
  double? _hSpacingXxl;

  double? _vSpacingXxs;
  double? _vSpacingXs;
  double? _vSpacingSm;
  double? _vSpacingBase;
  double? _vSpacingLg;
  double? _vSpacingXl;
  double? _vSpacingXxl;
  double? _vSpacingPage;

  /* ==================
          线段
 ==================== */
  // 细线段
  double? _lineThin;

  //基础线段
  double? _lineBase;

  //粗线段
  double? _lineBold;

//  木有圆角
  double? _radiusZero;

  //小号圆角
  double? _radiusSm;

  //基础圆角
  double? _radiusBase;

  //大圆角
  double? _radiusLg;

  //超大圆角
  double? _radiusXl;

  //圆形圆角
  double? _radiusCircle;

/* ==================
          动画时间
 ==================== */
  //极短时间
  int? _durationShortest;

  //短时间
  int? _durationShort;

  //默认时间
  int? _durationBase;

  //长时间
  int? _durationLong;

/* ==================
          图标大小
 ==================== */
  //超小号图标
  double? _iconSizeXxs;

  //较小号图标
  double? _iconSizeXs;

  //小号图标
  double? _iconSizeSm;

  //中等图标大小
  double? _iconSizeMd;

  double? _iconSizeLg;
  double? _iconSizeXl;

  //大号图标大小
  double? _iconSizeXxl;

/* ==================
          头像大小
 ==================== */
  double? _avatarSizeXs;
  double? _avatarSizeSm;
  double? _avatarSizeMd;
  double? _avatarSizeLg;
  double? _avatarSizeXl;

/* ==================
          阴影
 ==================== */
  //一层阴影
  List<BoxShadow>? _shadowSmall;

  //二层阴影
  List<BoxShadow>? _shadowMiddle;

  //三层阴影
  List<BoxShadow>? _shadowLarge;

  /* ==================
          透明度
 ==================== */
  // 高亮度透明度
  double? _highlightOpacity;

  //涟漪的透明度
  double? _splashOpacity;

  //禁用文字的透明度
  double? _disabledTextOpacity;

  //禁用的透明度
  double? _disabledOpacity;

  HcCommonTheme({
    Color? primaryColor,
    Color? successColor,
    Color? errorColor,
    Color? warningColor,
    Color? helpColor,
    Color? noticeColor,
    Color? disabledColor,
    Color? defaultColor,
    Color? surfaceColor,
    Color? onSurfaceColor,
    Color? textBaseColor,
    Color? textSubtitleColor,
    Color? textTitleColor,
    Color? textPriceColor,
    Color? textDisableColor,
    Color? textHintColor,
    Color? underlineColor,
    Color? linkColor,
    Color? borderColor,
    Color? fillPageColor,
    Color? fillWidgetColor,
    Color? fillMaskColor,
    Color? textInverseColor,
    double? fontSizeLarge,
    double? fontSizeBase,
    double? fontSizeTitle,
    double? fontSizeSubtitle,
    double? fontSizeHint,
    double? fontSizeBadge,
    double? fontSizeSmall,
    double? fontSizeTag,
    double? fontHeightMd,
    double? fontHeightLg,
    double? vSpacingPage,
    double? hSpacingPage,
    double? hSpacingXs,
    double? hSpacingXxs,
    double? hSpacingBase,
    double? hSpacingSm,
    double? vSpacingBase,
    double? hSpacingLg,
    double? hSpacingXl,
    double? hSpacingXxl,
    double? vSpacingXs,
    double? vSpacingXxs,
    double? vSpacingSm,
    double? vSpacingLg,
    double? vSpacingXl,
    double? vSpacingXxl,
    double? lineThin,
    double? lineBase,
    double? lineBold,
    double? radiusZero,
    double? radiusSm,
    double? radiusBase,
    double? radiusLg,
    double? radiusXl,
    double? radiusCircle,
    int? durationShortest,
    int? durationShort,
    int? durationBase,
    int? durationLong,
    double? iconSizeXxs,
    double? iconSizeXs,
    double? iconSizeSm,
    double? iconSizeMd,
    double? iconSizeLg,
    double? iconSizeXl,
    double? iconSizeXxl,
    double? avatarSizeXs,
    double? avatarSizeSm,
    double? avatarSizeMd,
    double? avatarSizeLg,
    double? avatarSizeXl,
    double? highlightOpacity,
    double? splashOpacity,
    double? disabledTextOpacity,
    double? disabledOpacity,
    List<BoxShadow>? shadowSmall,
    List<BoxShadow>? shadowMiddle,
    List<BoxShadow>? shadowLarge,
  })  : _successColor = successColor,
        _primaryColor = primaryColor,
        _errorColor = errorColor,
        _warningColor = warningColor,
        _noticeColor = noticeColor,
        _helpColor = helpColor,
        _disabledColor = disabledColor,
        _defaultColor = defaultColor,
        _surfaceColor = surfaceColor,
        _onSurfaceColor = onSurfaceColor,
        _textBaseColor = textBaseColor,
        _textSubtitleColor = textSubtitleColor,
        _textTitleColor = textTitleColor,
        _textPriceColor = textPriceColor,
        _textDisableColor = textDisableColor,
        _textHintColor = textHintColor,
        _underlineColor = underlineColor,
        _linkColor = linkColor,
        _borderColor = borderColor,
        _fillPageColor = fillPageColor,
        _fillWidgetColor = fillWidgetColor,
        _fillMaskColor = fillMaskColor,
        _fontSizeLarge = fontSizeLarge,
        _fontSizeTitle = fontSizeTitle,
        _fontSizeSubtitle = fontSizeSubtitle,
        _fontSizeBase = fontSizeBase,
        _fontSizeHint = fontSizeHint,
        _fontSizeBadge = fontSizeBadge,
        _fontSizeSmall = fontSizeSmall,
        _fontSizeTag = fontSizeTag,
        _fontHeightMd = fontHeightMd,
        _fontHeightLg = fontHeightLg,
        _hSpacingPage = hSpacingPage,
        _hSpacingXxs = hSpacingXxs,
        _hSpacingXs = hSpacingXs,
        _hSpacingBase = hSpacingBase,
        _hSpacingSm = hSpacingSm,
        _hSpacingLg = hSpacingLg,
        _hSpacingXxl = hSpacingXxl,
        _hSpacingXl = hSpacingXl,
        _vSpacingPage = vSpacingPage,
        _vSpacingXl = vSpacingXl,
        _vSpacingXxl = vSpacingXxl,
        _vSpacingLg = vSpacingLg,
        _vSpacingBase = vSpacingBase,
        _vSpacingXs = vSpacingXs,
        _vSpacingXxs = vSpacingXxs,
        _vSpacingSm = vSpacingSm,
        _textInverseColor = textInverseColor,
        _lineThin = lineThin,
        _lineBase = lineBase,
        _lineBold = lineBold,
        _radiusZero = radiusZero,
        _radiusSm = radiusSm,
        _radiusBase = radiusBase,
        _radiusLg = radiusLg,
        _radiusXl = radiusXl,
        _radiusCircle = radiusCircle,
        _durationShort = durationShort,
        _durationShortest = durationShortest,
        _durationBase = durationBase,
        _durationLong = durationLong,
        _iconSizeXxs = iconSizeXxs,
        _iconSizeXs = iconSizeXs,
        _iconSizeSm = iconSizeSm,
        _iconSizeMd = iconSizeMd,
        _iconSizeLg = iconSizeLg,
        _iconSizeXl = iconSizeXl,
        _iconSizeXxl = iconSizeXxl,
        _avatarSizeXs = avatarSizeXs,
        _avatarSizeSm = avatarSizeSm,
        _avatarSizeMd = avatarSizeMd,
        _avatarSizeLg = avatarSizeLg,
        _avatarSizeXl = avatarSizeXl,
        _highlightOpacity = highlightOpacity,
        _splashOpacity = splashOpacity,
        _disabledTextOpacity = disabledTextOpacity,
        _disabledOpacity = disabledOpacity,
        _shadowSmall = shadowSmall,
        _shadowMiddle = shadowMiddle,
        _shadowLarge = shadowLarge;

  @override
  HcCommonTheme merge(HcCommonTheme? value) {
    return this;
  }

  @override
  initTheme({HcCommonTheme? tempTheme}) {
    super.initTheme(tempTheme: tempTheme);
    _primaryColor ??= commonTheme._primaryColor;
    _successColor ??= commonTheme._successColor;
    _errorColor ??= commonTheme._errorColor;
    _warningColor ??= commonTheme._warningColor;
    _noticeColor ??= commonTheme._noticeColor;
    _helpColor ??= commonTheme._helpColor;
    _disabledColor ??= commonTheme._disabledColor;
    _defaultColor ??= commonTheme._defaultColor;
    _surfaceColor ??= commonTheme._surfaceColor;
    _onSurfaceColor ??= commonTheme._onSurfaceColor;

    _textBaseColor ??= commonTheme._textBaseColor;
    _textTitleColor ??= commonTheme._textTitleColor;
    _textSubtitleColor ??= commonTheme._textSubtitleColor;
    _textPriceColor ??= commonTheme._textPriceColor;
    _textDisableColor ??= commonTheme._textDisableColor;
    _textHintColor ??= commonTheme._textHintColor;
    _textInverseColor ??= commonTheme._textInverseColor;

    _underlineColor ??= commonTheme._underlineColor;
    _linkColor ??= commonTheme._linkColor;
    _borderColor ??= commonTheme._borderColor;

    _fillPageColor ??= commonTheme._fillPageColor;
    _fillWidgetColor ??= commonTheme._fillWidgetColor;
    _fillMaskColor ??= commonTheme._fillMaskColor;

    _fontSizeBase ??= commonTheme._fontSizeBase;
    _fontSizeTitle ??= commonTheme._fontSizeTitle;
    _fontSizeSubtitle ??= commonTheme._fontSizeSubtitle;
    _fontSizeHint ??= commonTheme._fontSizeHint;
    _fontSizeLarge ??= commonTheme._fontSizeLarge;
    _fontSizeBadge ??= commonTheme._fontSizeBadge;
    _fontSizeSmall ??= commonTheme._fontSizeSmall;
    _fontSizeTag ??= commonTheme._fontSizeTag;
    _fontHeightMd ??= commonTheme._fontHeightMd;
    _fontHeightLg ??= commonTheme._fontHeightLg;

    _hSpacingXxs ??= commonTheme._hSpacingXxs;
    _hSpacingXs ??= commonTheme._hSpacingXs;
    _hSpacingSm ??= commonTheme._hSpacingSm;
    _hSpacingBase ??= commonTheme._hSpacingBase;
    _hSpacingLg ??= commonTheme._hSpacingLg;
    _hSpacingXl ??= commonTheme._hSpacingXl;
    _hSpacingXxl ??= commonTheme._hSpacingXxl;
    _hSpacingPage ??= commonTheme._hSpacingPage;

    _vSpacingXxs ??= commonTheme._vSpacingXxs;
    _vSpacingXs ??= commonTheme._vSpacingXs;
    _vSpacingSm ??= commonTheme._vSpacingSm;
    _vSpacingBase ??= commonTheme._vSpacingBase;
    _vSpacingLg ??= commonTheme._vSpacingLg;
    _vSpacingXl ??= commonTheme._vSpacingXl;
    _vSpacingXxl ??= commonTheme._vSpacingXxl;
    _vSpacingPage ??= commonTheme._vSpacingPage;

    _lineThin ??= commonTheme._lineThin;
    _lineBold ??= commonTheme._lineBold;
    _lineBase ??= commonTheme._lineBase;
    _radiusZero ??= commonTheme._radiusZero;
    _radiusSm ??= commonTheme._radiusSm;
    _radiusBase ??= commonTheme._radiusBase;
    _radiusLg ??= commonTheme._radiusLg;
    _radiusXl ??= commonTheme._radiusXl;
    _radiusCircle ??= commonTheme._radiusCircle;
    _durationBase ??= commonTheme._durationBase;
    _durationLong ??= commonTheme._durationLong;
    _durationShortest ??= commonTheme._durationShortest;
    _durationShort ??= commonTheme._durationShort;

    _iconSizeXxs ??= commonTheme._iconSizeXxs;
    _iconSizeXs ??= commonTheme._iconSizeXs;
    _iconSizeSm ??= commonTheme._iconSizeSm;
    _iconSizeMd ??= commonTheme._iconSizeMd;
    _iconSizeLg ??= commonTheme._iconSizeLg;
    _iconSizeXl ??= commonTheme._iconSizeXl;
    _iconSizeXxl ??= commonTheme._iconSizeXxl;

    _avatarSizeXs ??= commonTheme._avatarSizeXs;
    _avatarSizeSm ??= commonTheme._avatarSizeSm;
    _avatarSizeMd ??= commonTheme._avatarSizeMd;
    _avatarSizeLg ??= commonTheme._avatarSizeLg;
    _avatarSizeXl ??= commonTheme._avatarSizeXl;

    _disabledOpacity ??= commonTheme._disabledOpacity;
    _disabledTextOpacity ??= commonTheme._disabledTextOpacity;
    _splashOpacity ??= commonTheme._splashOpacity;
    _highlightOpacity ??= commonTheme._highlightOpacity;

    _shadowSmall ??= commonTheme._shadowSmall;
    _shadowMiddle ??= commonTheme._shadowMiddle;
    _shadowLarge ??= commonTheme._shadowLarge;
  }

  Color get primaryColor =>
      _primaryColor ?? HcDefaultThemeConfig.defaultCommonTheme.primaryColor;

  Color get successColor =>
      _successColor ?? HcDefaultThemeConfig.defaultCommonTheme.successColor;

  Color get errorColor =>
      _errorColor ?? HcDefaultThemeConfig.defaultCommonTheme.errorColor;

  Color get warningColor =>
      _warningColor ?? HcDefaultThemeConfig.defaultCommonTheme.warningColor;

  Color get disabledColor =>
      _disabledColor ?? HcDefaultThemeConfig.defaultCommonTheme.disabledColor;

  Color get defaultColor =>
      _defaultColor ?? HcDefaultThemeConfig.defaultCommonTheme.defaultColor;

  Color get textBaseColor =>
      _textBaseColor ?? HcDefaultThemeConfig.defaultCommonTheme.textBaseColor;

  Color get textSubtitleColor =>
      _textSubtitleColor ??
      HcDefaultThemeConfig.defaultCommonTheme.textSubtitleColor;

  Color get textTitleColor =>
      _textTitleColor ?? HcDefaultThemeConfig.defaultCommonTheme.textTitleColor;

  Color get textPriceColor =>
      _textPriceColor ?? HcDefaultThemeConfig.defaultCommonTheme.textPriceColor;

  Color get textDisableColor =>
      _textDisableColor ??
      HcDefaultThemeConfig.defaultCommonTheme.textDisableColor;

  Color get textHintColor =>
      _textHintColor ?? HcDefaultThemeConfig.defaultCommonTheme.textHintColor;

  Color get underlineColor =>
      _underlineColor ?? HcDefaultThemeConfig.defaultCommonTheme.underlineColor;

  Color get linkColor =>
      _linkColor ?? HcDefaultThemeConfig.defaultCommonTheme.linkColor;

  Color get borderColor =>
      _borderColor ?? HcDefaultThemeConfig.defaultCommonTheme.borderColor;

  Color get fillPageColor =>
      _fillPageColor ?? HcDefaultThemeConfig.defaultCommonTheme.fillPageColor;

  Color get fillWidgetColor =>
      _fillWidgetColor ??
      HcDefaultThemeConfig.defaultCommonTheme.fillWidgetColor;

  Color get fillMaskColor =>
      _fillMaskColor ?? HcDefaultThemeConfig.defaultCommonTheme.fillMaskColor;

  double get fontSizeLarge =>
      _fontSizeLarge ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeLarge;

  double get fontSizeBase =>
      _fontSizeBase ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeBase;

  double get fontSizeTitle =>
      _fontSizeTitle ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeTitle;

  double get fontSizeSubtitle =>
      _fontSizeSubtitle ??
      HcDefaultThemeConfig.defaultCommonTheme.fontSizeSubtitle;

  double get fontSizeHint =>
      _fontSizeHint ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeHint;

  double get fontSizeBadge =>
      _fontSizeBadge ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeBadge;

  double get fontSizeSmall =>
      _fontSizeSmall ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeSmall;

  double get fontSizeTag =>
      _fontSizeTag ?? HcDefaultThemeConfig.defaultCommonTheme.fontSizeTag;

  double get vSpacingPage =>
      _vSpacingPage ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingPage;

  double get hSpacingPage =>
      _hSpacingPage ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingPage;

  double get hSpacingXxs =>
      _hSpacingXxs ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingXxs;

  double get hSpacingXs =>
      _hSpacingXs ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingXs;

  double get hSpacingBase =>
      _hSpacingBase ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingBase;

  Color get textInverseColor =>
      _textInverseColor ??
      HcDefaultThemeConfig.defaultCommonTheme.textInverseColor;

  double get hSpacingSm =>
      _hSpacingSm ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingSm;

  double get vSpacingBase =>
      _vSpacingBase ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingBase;

  double get hSpacingLg =>
      _hSpacingLg ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingLg;

  double get hSpacingXl =>
      _hSpacingXl ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingXl;

  double get hSpacingXxl =>
      _hSpacingXxl ?? HcDefaultThemeConfig.defaultCommonTheme.hSpacingXxl;

  double get vSpacingXxs =>
      _vSpacingXxs ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingXxs;

  double get vSpacingXs =>
      _vSpacingXs ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingXs;

  double get vSpacingSm =>
      _vSpacingSm ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingSm;

  double get lineThin =>
      _lineThin ?? HcDefaultThemeConfig.defaultCommonTheme.lineThin;

  double get lineBase =>
      _lineBase ?? HcDefaultThemeConfig.defaultCommonTheme.lineBase;

  double get lineBold =>
      _lineBold ?? HcDefaultThemeConfig.defaultCommonTheme.lineBold;

  double get radiusZero =>
      _radiusZero ?? HcDefaultThemeConfig.defaultCommonTheme.radiusZero;

  double get radiusSm =>
      _radiusSm ?? HcDefaultThemeConfig.defaultCommonTheme.radiusSm;

  double get radiusBase =>
      _radiusBase ?? HcDefaultThemeConfig.defaultCommonTheme.radiusBase;

  double get radiusLg =>
      _radiusLg ?? HcDefaultThemeConfig.defaultCommonTheme.radiusLg;

  double get radiusXl =>
      _radiusXl ?? HcDefaultThemeConfig.defaultCommonTheme.radiusXl;

  double get radiusCircle =>
      _radiusCircle ?? HcDefaultThemeConfig.defaultCommonTheme.radiusCircle;

  int get durationLong =>
      _durationLong ?? HcDefaultThemeConfig.defaultCommonTheme.durationLong;

  int get durationBase =>
      _durationBase ?? HcDefaultThemeConfig.defaultCommonTheme.durationBase;

  int get durationShort =>
      _durationShort ?? HcDefaultThemeConfig.defaultCommonTheme.durationShort;

  int get durationShortest =>
      _durationShortest ??
      HcDefaultThemeConfig.defaultCommonTheme.durationShortest;

  List<BoxShadow> get shadowLarge =>
      _shadowLarge ?? HcDefaultThemeConfig.defaultCommonTheme.shadowLarge;

  List<BoxShadow> get shadowMiddle =>
      _shadowMiddle ?? HcDefaultThemeConfig.defaultCommonTheme.shadowMiddle;

  List<BoxShadow> get shadowSmall =>
      _shadowSmall ?? HcDefaultThemeConfig.defaultCommonTheme.shadowSmall;

  Color get helpColor =>
      _helpColor ?? HcDefaultThemeConfig.defaultCommonTheme.helpColor;

  Color get noticeColor =>
      _noticeColor ?? HcDefaultThemeConfig.defaultCommonTheme.noticeColor;

  double get iconSizeXl =>
      _iconSizeXl ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeXl;

  double get iconSizeXxl =>
      _iconSizeXxl ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeXxl;

  double get iconSizeMd =>
      _iconSizeMd ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeMd;

  double get iconSizeSm =>
      _iconSizeSm ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeSm;

  double get iconSizeXs =>
      _iconSizeXs ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeXs;

  double get iconSizeXxs =>
      _iconSizeXxs ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeXxs;

  double get iconSizeLg =>
      _iconSizeLg ?? HcDefaultThemeConfig.defaultCommonTheme.iconSizeLg;

  double get vSpacingLg =>
      _vSpacingLg ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingLg;

  double get vSpacingXl =>
      _vSpacingXl ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingXl;

  double get vSpacingXxl =>
      _vSpacingXxl ?? HcDefaultThemeConfig.defaultCommonTheme.vSpacingXxl;

  Color get onSurfaceColor =>
      _onSurfaceColor ?? HcDefaultThemeConfig.defaultCommonTheme.onSurfaceColor;

  Color get surfaceColor =>
      _surfaceColor ?? HcDefaultThemeConfig.defaultCommonTheme.surfaceColor;

  double get disabledOpacity =>
      _disabledOpacity ??
      HcDefaultThemeConfig.defaultCommonTheme.disabledOpacity;

  double get disabledTextOpacity =>
      _disabledTextOpacity ??
      HcDefaultThemeConfig.defaultCommonTheme.disabledTextOpacity;

  double get splashOpacity =>
      _splashOpacity ?? HcDefaultThemeConfig.defaultCommonTheme.splashOpacity;

  double get highlightOpacity =>
      _highlightOpacity ??
      HcDefaultThemeConfig.defaultCommonTheme.highlightOpacity;

  double get avatarSizeXl =>
      _avatarSizeXl ?? HcDefaultThemeConfig.defaultCommonTheme.avatarSizeXl;

  double get avatarSizeLg =>
      _avatarSizeLg ?? HcDefaultThemeConfig.defaultCommonTheme.avatarSizeLg;

  double get avatarSizeMd =>
      _avatarSizeMd ?? HcDefaultThemeConfig.defaultCommonTheme.avatarSizeMd;

  double get avatarSizeSm =>
      _avatarSizeSm ?? HcDefaultThemeConfig.defaultCommonTheme.avatarSizeSm;

  double get avatarSizeXs =>
      _avatarSizeXs ?? HcDefaultThemeConfig.defaultCommonTheme.avatarSizeXs;

  double get fontHeightLg =>
      _fontHeightLg ?? HcDefaultThemeConfig.defaultCommonTheme.fontHeightLg;

  double get fontHeightMd =>
      _fontHeightMd ?? HcDefaultThemeConfig.defaultCommonTheme.fontHeightMd;
}
